package xyz.duduwy;

import java.sql.SQLOutput;

public class App {

    static class TesterImpl implements Tester{

        @Override
        public String get() {
            return "嘟嘟";
        }
    }

    public static void main(String[] args) {
        System.out.println("Hello world!");

        //
        System.out.println(new TesterImpl());
        System.out.println(new TesterImpl().get());

        //不用专门创建一个类去实现类中唯一的方法，可以直接创建一个匿名的内部类
        System.out.println(new Tester() {
            @Override
            public String get() {
                return "内部类";
            }
        }.get());

        //lambda表达式,看起来就像是把一个函数赋值给一个对象
        Tester tester = () -> "lambda表达式";
        System.out.println(tester.get());

        //
        //new App().doTester(() -> getStr());  注意比较这句和下一句
        new App().doTester(App::getStr);

    }

    static String getStr(){
        return "方法参考";
    }

    void doTester(Tester test){
        System.out.println(test.get());
    }

}
@FunctionalInterface
interface Tester{
    String get();
}
